<?php
/**
 * Created by PhpStorm.
 * User: ZCY
 * Date: 2018/12/28
 * Time: 16:43
 */
namespace common\behavior;

use Yii;
use yii\base\Controller;

/**
 * Class AccessBehavior
 * @package common\behavior
 */
class AccessBehavior extends \yii\base\Behavior
{

    /**
     * @var array 无需权限检查的action
     */
    public $allowActions = [];

    /**
     * 功能说明
     * @return array
     */
    public function events()
    {
        return [
            Controller::EVENT_BEFORE_ACTION => 'accessAction',
        ];
    }

    /**
     * 控制器执行前的rbac处理
     * @param $event \yii\base\ActionEvent 为什么是ActionEvent而不是Event，
     *        因为yii/base/Controller第269行，事件参数是$event = new ActionEvent($action)
     *
     * 注意：ActionEvent::$isValid参数true/false分别表示继续执行或终止执行action，
     *        所以验证成功后要$event->isValid = true，参考代码yii/base/Controller第152、270行
     * @param $event
     * @return bool
     */
    public function accessAction($event)
    {
        $action = $event->action;
        $rule = $action->getUniqueId();
        echo $rule;
        $can = true;
        if($can){    //如果验证通过

        }else{ //验证不通过
            $event->isValid = false;
            //*************//
        }


    }



}
